package anshe
{
	import anshe.event.AnsheClientEvent;
	import anshe.inface.IStruct;
	import anshe.widget.AnsheClient;

	public class TemplateClass extends AnsheClient
	{
		//	使用该模板后，构造函数及类名必须的更改
		public function TemplateClass(gName:String, swfName:String)
		{
			//	这里要填入你游戏的信息
			//		gName	特指在服务器端定义的游戏名
			//		swfName	特指当前游戏的主文件的 SWF 文件的名称（不需要加后面的 .swf 扩展名）
			super(gName, swfName);
		}
		
		//	向 NC 注册事件侦听的类
		//	默认情况下，仅有 创建房间成功 这个功能会使用该侦听
		//	也可以在该方法中加入自己定义的事件侦听
		public override function InitGameListener():void
		{
			super.InitGameListener();
		}
		
		//--------------------------------------------------------------------
		
		protected override function InitGame():void
		{
			super.InitGame();
			
			Init();
			
			this.addEventListener(AnsheClientEvent.UPDATA_ROOM_INFO, onRushRoomInfoEvent);
			this.addEventListener(AnsheClientEvent.UPDATA_PLAYER_INFO, onRushPlayerInfoEvent);
			this.addEventListener(AnsheClientEvent.UPDATA_GAME_DATA, onRushGameDataEvent);

			JoinGame();			
		}
		
		private function Init():void
		{
			//	这里要加入你自己游戏内部数据的初始化处理方法
			//	以及相应的事件侦听及初始化方法
		}
		
		
		//	更新房间信息
		//		该信息会在 JoinGame() 后自动调用，此时会给 roomArray 赋初始值
		//		当以后 房间信息 会有改变时，也会自动调用，被改变的 房间 可以由 e.data 取得
		private function onRushRoomInfoEvent(e:AnsheClientEvent):void
		{			
		}

		//	更新玩家信息
		//		该信息会在 加入房间 后自动调用，此时会给 userArray 赋初始值
		//		当以后 用户信息 会有改变时，也会自动调用，被改变的 用户 可以由 e.data 取得
		private function onRushPlayerInfoEvent(e:AnsheClientEvent):void
		{			
		}

		//	更新游戏数据信息		
		//		当以后 游戏信息 会有改变时，也会自动调用，被改变的 游戏信息 可以由 e.data 取得
		private function onRushGameDataEvent(e:AnsheClientEvent):void
		{			
		}
		
		//--------------------------------------------------------------------
		
		protected override function GetGameRoomInfo(obj:Object):IStruct
		{
			return super.GetGameRoomInfo(obj);
		}
		
		protected override function GetGamePlayerInfo(obj:Object):IStruct
		{
			return super.GetGamePlayerInfo(obj);
		}
		
		protected override function GetGameDataInfo(obj:Object):IStruct
		{
			return super.GetGameDataInfo(obj);
		}
		
		//----------------------------------------------------------
		
		protected override function DeleteListener():void
		{
			super.DeleteListener();
			
			//	这里要加入你自定义的相关侦听器的删除，以及相应 Timer 对象的删除处理
		}		
	}
}